package test;

import impleDao.AlquilerImple;
import impleDao.ClienteImple;
import impleDao.GeneroImple;
import impleDao.PeliculaImple;
import impleDao.PromocionImple;

import java.util.ArrayList;
import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.zkoss.zul.Comboitem;

import dao.AlquilerDAO;
import dao.ClienteDAO;
import dao.GeneroDAO;
import dao.PeliculaDAO;
import dao.PromocionDAO;

import modelo.Alquiler;
import modelo.Cliente;
import modelo.Genero;
import modelo.Pelicula;
import modelo.Promocion;
import app.Facade;


public class FacadeImple implements Facade
{

	private PeliculaDAO pelicula;
	private AlquilerDAO alquiler;
	private PromocionDAO promocion;
	private GeneroDAO genero;
	private ClienteDAO cliente;
	
	@Override
	public List<Genero> obtenerGeneros()
	{
		// TODO Auto-generated method stub
		
		List<Genero> lst=genero.findAll();
		
		return lst;
	}

	@Override
	public List<Pelicula> obtenerPeliculasXGenero(int idGen)
	{
		// TODO Auto-generated method stub
	
		List<Pelicula> lst=pelicula.findByGenero(idGen);
		return lst;
	}

	@Override
	public List<Promocion> obtenerPromociones()
	{
		// TODO Auto-generated method stub
		
		List<Promocion> lst=promocion.findAll();
		return lst;
	}

	@Override
	public Cliente identificarCliente(int idCli, String nom)
	{
		// TODO Auto-generated method stub
		
		Cliente c=cliente.find(idCli);
		if(c.getNombre().compareTo(nom)==0)
			return c;
		else
			return null;
	}

	@Override
	public int agregarAlquiler(Alquiler a)
	{
		// TODO Auto-generated method stub
		
		return alquiler.insert(a);
		
	}

	public PeliculaDAO getPelicula()
	{
		return pelicula;
	}

	public void setPelicula(PeliculaDAO pelicula)
	{
		this.pelicula=pelicula;
	}

	public AlquilerDAO getAlquiler()
	{
		return alquiler;
	}

	public void setAlquiler(AlquilerDAO alquiler)
	{
		this.alquiler=alquiler;
	}

	public PromocionDAO getPromocion()
	{
		return promocion;
	}

	public void setPromocion(PromocionDAO promocion)
	{
		this.promocion=promocion;
	}

	public GeneroDAO getGenero()
	{
		return genero;
	}

	public void setGenero(GeneroDAO genero)
	{
		this.genero=genero;
	}

	public ClienteDAO getCliente()
	{
		return cliente;
	}

	public void setCliente(ClienteDAO cliente)
	{
		this.cliente=cliente;
	}

	@Override
	public int obtenerIdGenero(String c)
	{
		
		//System.out.println(c);
		// TODO Auto-generated method stub
		ArrayList<Genero> lst=(ArrayList<Genero>)this.obtenerGeneros();
		int i=0;
		boolean rdo=false;
		int rpta=0;
		while(i<lst.size() && !rdo){
			if(c.compareTo(lst.get(i).getDescripcion())==0){
				rpta=lst.get(i).getIdGenero();
				rdo=true;
			}
			i++;
		}
		return rpta;
	}

	@Override
	public int obtenerIdPelicula(String c)
	{
		// TODO Auto-generated method stub
		ArrayList<Pelicula> lst=(ArrayList<Pelicula>)this.getPelicula().findAll();
		//System.out.println("cantidad de peliculas: "+lst.size());
		int i=0;
		boolean rdo=false;
		int rpta=0;
		
		while(i<lst.size() && !rdo){
			if(c.compareTo(lst.get(i).getTitulo())==0){
				rpta=lst.get(i).getIdPelicula();
				rdo=true;
			}
			i++;
		}
		
		return rpta;
	}

	@Override
	public Promocion traerPromocion(String c)
	{
		// TODO Auto-generated method stub
		ArrayList<Promocion> lst=(ArrayList<Promocion>)this.obtenerPromociones();
		//System.out.println("cantidad de peliculas: "+lst.size());
		int i=0;
		boolean rdo=false;
		Promocion rpta=null;
		
		while(i<lst.size() && !rdo){
			if(c.compareTo(lst.get(i).getDescripcion())==0){
				rpta=lst.get(i);
				rdo=true;
			}
			i++;
		}
		return rpta;
	}

	
	



}
